Next:
Reentrancy
, Previous:
State base State transition
, Up:
Index
Observer with Boost::Signals2
Boost::Signal2 라이브러리는 std::signal에 해당하는 타입을 제공한다.
시그널은 함수나 람다를 전달하여 수신 등록, 수신 해제, 알림 받기 등을 처리할 수 있다.
template
<
typename
T
>
struct
Observable
{
signal
<
void
(
T
&
,
const
string
&
)
>
property_changed
;
}
;
struct
person
:
Observable
<
Person
>
{
// ...
void
set_age
(
const
int
age
)
{
if
(
this
->
age
==
age
)
return
;
this
->
age
=
age
;
property_changed
(
*
this
,
"
age
"
)
;
}
}
;
//
사
용
Person
p
{
123
}
;
auto
conn
=
p
.
property_changed
.
connect
([
]
(
Person
&
,
const
string
&
prop_name
)
{
cout
<<
prop_name
<<
"
has been changed
"
<<
endl
"
;
})
;
p
.
set_age
(
20
)
;
conn
.
disconnect
(
)
;